草庐IT

Android StrictMode 和堆转储

全部标签

java - 您可以覆盖由 -XX+HeapDumpOnOutOfMemoryError 生成的堆转储的文件权限吗?

在Linux上,当使用-XX+HeapDumpOnOutOfMemoryError时,生成的hprof文件归运行java进程的用户所有,权限为600。我知道这些权限是最安全的,但是否可以覆盖它们? 最佳答案 你可以用启动JVMjava-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError="chmodg+rjava_pid*.hprof"{mainclass}{args}该命令在创建堆转储后运行。例如,这将允许对当前目录中的所有堆转储文件进行组读取访问。

java - 分析堆转储,Map#size() 不是一个函数?

得到这个奇怪的错误:javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:TypeError:size不是一个函数,它是空的。(#1)在VisualVM上分析堆转储并运行此OQL查询时:select{map:x}fromjava.util.concurrent.ConcurrentHashMapxwherex.size()问题出在where子句上,虽然Map显然有一个size方法,但不知何故它不起作用。 最佳答案 @ruakh的回答非常好

java - 没有创建 hs_err_pid.log 文件,也没有从 Solaris 上的 jvm 转储核心

问题描述在运行我的Java服务器应用程序一段时间后,我遇到了Solaris上OracleJava虚拟机的奇怪行为。通常,当jvm崩溃时,会创建hs_err_pid.log文件(位置由-XX:ErrorFilejvm参数确定,如下所述:HowcanIsuppressthecreationofthehs_err_pidfile?但在我的例子中,文件没有创建,唯一剩下的是core核心转储文件。使用pstack和pflags标准Solaris工具,我能够从core收集有关崩溃的更多信息(包括在下面)文件。尝试过的解决方案试图在整个文件系统中查找所有hs_err_pid.log文件,但什么也找不

Java SnakeYaml - 防止转储引用名称

我使用以下方法将对象转换为yaml表示(例如,我可以打印到控制台)@NonnullprivateStringoutputObject(@NonnullfinalObjectToPrintpackageSchedule){DumperOptionsoptions=newDumperOptions();options.setAllowReadOnlyProperties(true);options.setPrettyFlow(true);returnnewYaml(newConstructor(),newJodaTimeRepresenter(),options).dump(ObjectT

java - 生成堆转储 Java JRE7

我正在尝试从我的Java程序生成堆转储,但无论我尝试什么,我似乎都无法弄清楚如何去做。我下载了EclipseMemoryAnalyzer(插件和独立版),它应该能够从Activity的jre进程中获取热转储。但它没有列出任何内容。文档列出了几种生成它们的其他方法,但我似乎无法使它们中的任何一种起作用,或者它们指的是我的系统中似乎不存在的东西。这同样适用于我在网上找到的任何东西......该程序不会导致内存不足异常,它只是使用了比我预期的多得多的资源。我完全不知道它应该如何完成:/如有任何帮助,我们将不胜感激。 最佳答案 您可以使用J

java - 如何读取由 jconsole 创建的堆转储文件?

我通过在jconsole中调用com.sun.management.HotSpotDiagnosticMXBean的dumpHeap操作手动执行堆转储。所以我得到了一个转储文件。我的问题:jconsole可以读取转储文件吗?如果不是,哪个工具可以读取它?谢谢!编辑:现在我知道jconsole不提供读取功能,我想知道为什么jconsole只写转储文件而没有读取功能。(这不是我的问题,我只是好奇而已) 最佳答案 我找到了一个Eclipse插件MemoryAnalyzer自己读取转储文件。仍然欢迎使用其他工具。

java - 如何获取用于在 Mac 上创建火焰图的 Java 分析转储?

我想从我的Java应用程序中收集堆栈跟踪以创建CPUFlameGraphs用于分析。这与这个问题非常相似:Howtogetcompletestackdumpfromprofilerineverysampleforuseinflamegraph?有两个区别:我使用Java代码,我需要Java堆栈跟踪我在Mac上工作(这意味着没有pref并且OSX上的AFAIKdtrace不支持jstack扩展)。我已经试过了lightweight-java-profiler和Honestprofiler,而且它们似乎都不适用于Mac。我也试过VisualVM,但我无法让它生成我需要的堆栈跟踪转储。对我来

java - Sun JDK 能否在 JVM 崩溃时生成核心/堆转储文件?

当JVM崩溃时,是否有生成核心/堆转储文件的方法?由于这些文件通常非常有助于找出代码中的错误。 最佳答案 使用以下JVM选项:-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath="/tmp"JVM会将堆中的内容转储到指定目录中的文件中。请注意,这仅在抛出OutOfMemoryError时发生,因为如果JVM由于其他原因而崩溃,则实际上不需要转储。编辑:“boolean选项用-XX:+打开,用-XX:-关闭。”docs 关于java-SunJDK

java - 如何使用 Apache Camel 转储随 HTTP 组件发送的 HTTP 正文和 header

如何使用此路由转储使用ApacheCamelHTTP组件发送的HTTP正文和header:from('direct:abc').setHeader(Exchange.HTTP_URI,constant("${config.gnutch.solr.coreUrl}/select")).setHeader(Exchange.HTTP_QUERY,constant("q=${q}&wt=xml")).setHeader(Exchange.CONTENT_TYPE,constant('application/xml')).setHeader(Exchange.HTTP_METHOD,const

java - VisualVM 连接到本地 TomEE 非常慢,无法进行堆转储

我在MACOSXmountainlion上遇到了TomEE1.5.1和VisualVM1.7.0_09的一个非常奇怪的问题。在TomEE加载一些webapp后。使用VisualVM连接本地TomEE进程需要很长时间,并且在连接后gc按钮被禁用,我无法进行堆转储。VisualVM的日志显示一些错误。com.sun.tools.attach.AttachNotSupportedException:Unabletoopensocketfile:targetprocessnotrespondingorHotSpotVMnotloadedatsun.tools.attach.BsdVirtual